package ec.edu.ups.cidi.siia.plamdep.configuracion;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;

import ec.edu.ups.cidi.siia.plamdep.utils.Log;


public class ConfiguracionGlobal 
{
	
	public static boolean notificaciones_mail=false;
	public static String mail_usr;
	public static String mail_password;
	public static String mail_server;
	public static String pathResources;
	public static String os;
	public static String mail_asunto;
	public static String mail_texto;

	public ConfiguracionGlobal()
	{
		cargarConfiguracion();	
	}
	
    public static void cargarConfiguracion()
    {
    	Log.log(null,Log.MOD_CONFIGURACION,Log.LEVEL_LOAD, ConfiguracionGlobal.class," * Cargando Configuracion");
	//	pathResources=Utils.leerFromConsola("Ingrese la ruta de la carpeta de recursos (default /opt/plamdep_resources)");
    	pathResources=System.getProperty("plamdep.resources.path");
    	pathResources=pathResources==null?"":pathResources;//obiene el path de los recursos desde el servidor
    	pathResources=pathResources.trim().equals("") ?"/opt/plamdep_resources":pathResources;//obiene el path de los recursos desde el servidor
		if (System.getProperty("os.name").startsWith("Windows"))os="windows";	
    	else os="linux";
    	Log.log(null,Log.MOD_CONFIGURACION, Log.LEVEL_LOAD, ConfiguracionGlobal.class,"PathResources:"+pathResources);
    	Log.log(null,Log.MOD_CONFIGURACION,Log.LEVEL_LOAD, ConfiguracionGlobal.class,"OS:"+os);
		
		
    	File globalConf=new File(pathResources+"/global.conf");
    	File analisisLexicoConf=new File(pathResources+"/mod_analisis.conf");
    	File cargaDocsConf=new File(pathResources+"/mod_carga_docs.conf");
    	File conexionWebConf=new File(pathResources+"/mod_conexion_web.conf");

    	loadConfiguracionFromArchivo(globalConf);
    	
    	new ConfiguracionAnalisiLexico();
    	ConfiguracionAnalisiLexico.loadConfiguracionFromArchivo(analisisLexicoConf);
    	new ConfiguracionCargaDocumentos();
    	ConfiguracionCargaDocumentos.loadConfiguracionFromArchivo(cargaDocsConf);
    	new ConfiguracionConexionWeb();
    	ConfiguracionConexionWeb.loadConfiguracionFromArchivo(conexionWebConf);
    	
    	
    	
    }
    
    
    public static void loadConfiguracionFromArchivo(File archivo )
    {
    	try {
            if(archivo.exists())
            {
               FileReader fr = new FileReader (archivo);
               BufferedReader br = new BufferedReader(fr);
               String linea="";
               while((linea=br.readLine())!=null)
                 if(linea.trim().length()>0)
                     setearConfiguracion(linea);
               fr.close();
               
            }
            else
            {
            	Log.log(null,Log.MOD_CONFIGURACION,Log.LEVEL_WARNING, ConfiguracionGlobal.class,"Archivo de configuracion ConfiguracionCargaDocumentos no encontrado, matiene valores default");
            }
         }
         catch(Exception e){e.printStackTrace();   }
    }
    
    
    
   private static void setearConfiguracion(String conf)
    {
        try{
        	
    	if(conf.trim().startsWith("#"))return;
        String[] separacion=conf.split("=");
        if(separacion.length!=2)return;
        
        String parametro=separacion[0].trim();
        String valor=separacion[1].trim();
        Log.log(null,Log.MOD_CONFIGURACION,Log.LEVEL_LOAD, ConfiguracionGlobal.class,"Estableciendo parametro: "+parametro+"   en "+valor);

        
        if(parametro.compareToIgnoreCase("notificaciones_mail")==0) notificaciones_mail=Boolean.valueOf(valor);
        else if(parametro.compareToIgnoreCase("mail_usr")==0) mail_usr=valor;
        else if(parametro.compareToIgnoreCase("mail_password")==0) mail_password=valor;
        else if(parametro.compareToIgnoreCase("mail_server")==0) mail_server=valor;
        else if(parametro.compareToIgnoreCase("mail_asunto")==0) mail_asunto=valor;
        else if(parametro.compareToIgnoreCase("mail_texto")==0) mail_texto=valor;
        else Log.log(null,Log.MOD_CONFIGURACION,Log.LEVEL_WARNING, ConfiguracionGlobal.class,parametro+":"+valor+ " No seteados"); 
              
        }catch(Exception e){Log.log(e,Log.MOD_CONFIGURACION,Log.LEVEL_WARNING, ConfiguracionGlobal.class,"Parametro invalido");}
    }
	
	

}
